//package com.wangshouyu.tools.utils.mail;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import javax.mail.*;
//import javax.mail.internet.*;
//import java.io.UnsupportedEncodingException;
//import java.util.Date;
//
///**
// * @author 王守钰
// * @date 2020年12月11日 11:57
// * @description
// */
//public class EmailUtils {
//
//    private EmailUtils() {
//    }
//
//    private static final Logger log = LoggerFactory.getLogger(EmailUtils.class);
//
//    public static void sendMail(EmailMessage emailMessage) {
//        Session session = Session.getInstance(emailMessage.getProperties());
//        session.setDebug(true);
//        MimeMessage message = new MimeMessage(session);
//        try {
//            // 发件人
//            Address address = new InternetAddress(emailMessage.getUsername());
//            message.setFrom(address);
//
//            Address[] addresses = emailMessage.getRecipients().stream().map(r -> {
//                try {
//                    Address toAddress = new InternetAddress(r);
//                    return toAddress;
//                } catch (AddressException e) {
//                    e.printStackTrace();
//                }
//                return null;
//            }).toArray(Address[]::new);
//            /**
//             * TO：代表有健的主要接收者。 CC：代表有健的抄送接收者。 BCC：代表邮件的暗送接收者。
//             */
//            message.addRecipients(MimeMessage.RecipientType.TO, addresses);
//            // 判断抄送人
//            if (null != emailMessage.getCc() && !emailMessage.getCc().isEmpty()) {
//                Address[] cc = emailMessage.getCc().stream().map(r -> {
//                    try {
//                        Address toAddress = new InternetAddress(r);
//                        return toAddress;
//                    } catch (AddressException e) {
//                        e.printStackTrace();
//                    }
//                    return null;
//                }).toArray(Address[]::new);
//                message.addRecipients(MimeMessage.RecipientType.CC, cc);
//            }
//
//            // 主题
//            message.setSubject(base64Encode(emailMessage.getSubject()));
//            // 时间
//            message.setSentDate(new Date());
//            Multipart multipart = new MimeMultipart();
//            // 填充body内容
//            for (BodyPart part : emailMessage.getBodyParts()) {
//                multipart.addBodyPart(part);
//            }
//            message.setContent(multipart);
//            message.saveChanges();
//
//        } catch (Exception e) {
//            log.error("发送邮件失败", e);
//        }
//        Transport transport = null;
//        try {
//            transport = session.getTransport("smtp");
//            transport.connect(emailMessage.getSmtpServer(), emailMessage.getUsername(), emailMessage.getPassword());
//            transport.sendMessage(message, message.getAllRecipients());
//        } catch (Exception e) {
//            log.error("发送邮件失败", e);
//        } finally {
//            if (null != transport) {
//                try {
//                    transport.close();
//                } catch (Exception e) {
//                    log.error("关闭传输信息失败", e);
//                }
//            }
//        }
//    }
//
//    /**
//     * 进行base64加密，防止中文乱码
//     */
//    public static String base64Encode(String str) {
//        try {
//            // "B"代表Base64
//            str = MimeUtility.encodeText(new String(str.getBytes(), "UTF-8"), "UTF-8", "B");
//        } catch (UnsupportedEncodingException e) {
//            e.printStackTrace();
//        }
//        return str;
//    }
//
//}
